In the current business environment, need for quality assurance of a software product is paramount to the success of Information Technology (IT) organizations. Quality assurance primarily involves testing of a software product at various stages of the software lifecycle to minimize defects. However, testing is a major factor driving overall cost of the project/program and anything done to reduce the cost of testing directly or indirectly results in cost saving to the project/program. In this context, automation in the area of software testing has grown and a lot of automation techniques are now available to increase efficiency and reduce cost. For example, these techniques include test cases automation to reduce cycle time, process automation to reduce overall schedule, automation of test cases when the requirements are being developed, parallel execution along with development when coding is being done, adding services that control the updating of test cases on change, change management and their impacts on testing and tools to fix them, and so forth. All these techniques involve reducing the time taken to overall testing, thereby reducing cost.
Additionally, the overall quality of any software product is determined based on the total production or post release defects that have leaked into the product. It is preferable to identify and correct defects as soon as possible in a software production so as not to adversely impact the customer experience or the organization's reputation and competitiveness. However, if the total number of production defects is very high, the time taken and cost involved for re-rollout of a product release or for fixing and testing the defects in the release is a challenge as testing imposes a big bottleneck. The main reason for above is time and cost incurred to manually identify right test cases to verify the fix, to manually execute the identified test cases for the given fix, and to manually identify regression test suite to make sure that the fix has not broken any other major functionalities.
A cost analysis shows that when a defect is leaked into production the cost of fixing that defect and testing the solution is the costliest. For example, if a defect that could have been detected in requirement phase is detected post release, then it would cost about 10-100 times more to fix than if the defect had been detected in the requirement phase itself. Further, if a defect is leaked to release after construction, then it would be 25 times costly to fix it. As stated above, this is mostly because of the retesting effort that is needed.
Existing software testing techniques do not completely address the issues stated above particularly with respect to production or post release defects. Existing techniques to test the production defects and/or to arrest production defects in customer environment involve manual processing and operations and are therefore time consuming and cost intensive. Moreover, there is no automated way to connect the various systems so as to optimize fixing and testing of software production defects. All these results in increased business spend for a particular release.